home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / pas / swag / screen.swg / 0026_Direct Video in BASM.pas < prev    next >
Pascal/Delphi Source File  |  1993-08-23  |  2KB  |  68 lines

  1. {
  2. ===========================================================================
  3.  BBS: Canada Remote Systems
  4. Date: 08-17-93 (19:47)             Number: 34561
  5. From: JOHN GIESBRECHT              Refer#: NONE
  6.   To: CHRIS PORTMAN                 Recvd: NO
  7. Subj: DIRECT VIDEO WRITES            Conf: (1221) F-PASCAL
  8. ---------------------------------------------------------------------------
  9. Chris Portman (1:229/15) wrote to All on <15 Aug 10:38> :
  10.  
  11.  CP> Can anyone write me a procedure that will write a character on
  12.  CP> the screen without moving the cursor (ie - DirWrite (80, 25,
  13.  CP> '!');). I just need this to write to the space at 80x25
  14.  CP> without scrolling the screen.
  15. }
  16. USES
  17.   crt;
  18.  
  19. PROCEDURE writechar (c : CHAR; attr, x, y : BYTE); assembler;
  20.  
  21. (*  assumes video page 0
  22.  *  upper left-hand corner is (1, 1)
  23.  *)
  24. asm
  25.   mov ax, $0300   (* get cursor position *)
  26.   XOR bh, bh
  27.   INT $10
  28.   push dx         (* and save it *)
  29.   mov ax, $0200   (* set cursor position *)
  30.   XOR bh, bh
  31.   mov dh, BYTE PTR y
  32.   DEC dh
  33.   mov dl, BYTE PTR x
  34.   DEC dl
  35.   INT $10
  36.   mov ah, $09     (* write char and attribute *)
  37.   mov al, BYTE PTR c
  38.   XOR bh, bh
  39.   mov bl, BYTE PTR attr
  40.   mov cx, $0001
  41.   INT $10         (* restore original cursor position *)
  42.   mov ax, $0200
  43.   XOR bh, bh
  44.   pop dx
  45.   INT $10
  46. END;
  47.  
  48. PROCEDURE WriteString (Row, Col, Attr : BYTE; STR : STRING);
  49. VAR Len : Byte ABSOLUTE Str;
  50.     I   : Byte;
  51. BEGIN
  52.   FOR I := 1 To Len DO  writechar (STR[i], Attr, Col + i, Row);
  53. END;
  54.  
  55. BEGIN
  56.   CLRSCR;
  57.   GOTOXY (40, 13);
  58.   writechar ('*', $0F, 1, 1);
  59.   writechar ('*', $0e, 80, 1);
  60.   writechar ('*', $0d, 1, 25);
  61.   writechar ('*', $0c, 80, 25);
  62.   WriteString(15,25,31,'Gayle Davis was here');
  63.   READKEY;
  64. END.
  65.  
  66. - - - MSQ - EE 2.1a / e2
  67.  * Origin : * idiot savant * St. Catharines, ON, Canada * (1 : 247 / 128)
  68.